package ec.edu.ucacue.siop.modelo.recurso;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import ec.edu.ucacue.siop.modelo.bases.UnidadMedida;
import ec.edu.ucacue.siop.modelo.material.Material;

/**
 * 
 * @author edgar chacon
 *
 * mantiene la informacion de la fuente del dato y el producto que se 
 * esta utilizando
 * 
 */
@Entity
@Table(name="var_alimentacion")
public class VariableAlimentacion implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private long id;
	private String nombre;
	private String fuenteDato;
	private boolean medida;
	private MaterialDefProd materiaProducto;
	private MaterialDefUso materiaUso;
	private EnergiaUso energiaUso;
	private List<VariableAlimentacionAsociada> listaVarAsociada;
	private List<VariableProcesoAsociada> listaVarProAsociada;
	private UnidadMedida unidad;
	private UnidadFuncional unidadFuncional;
	@Id
	@GeneratedValue
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	@Column(length=64)
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	@Column(length=64)
	public String getFuenteDato() {
		return fuenteDato;
	}
	public void setFuenteDato(String fuenteDato) {
		this.fuenteDato = fuenteDato;
	}
	public boolean isMedida() {
		return medida;
	}
	public void setMedida(boolean medida) {
		this.medida = medida;
	}
	@ManyToOne
	public UnidadMedida getUnidad() {
		return unidad;
	}
	public void setUnidad(UnidadMedida unidad) {
		this.unidad = unidad;
	}
	@ManyToOne
	public UnidadFuncional getUnidadFuncional() {
		return unidadFuncional;
	}
	public void setUnidadFuncional(UnidadFuncional unidadFuncional) {
		this.unidadFuncional = unidadFuncional;
	}
	@OneToMany(mappedBy="varPrincipal", cascade=CascadeType.ALL)
	public List<VariableAlimentacionAsociada> getListaVarAsociada() {
		return listaVarAsociada;
	}
	public void setListaVarAsociada(
			List<VariableAlimentacionAsociada> listaVarAsociada) {
		this.listaVarAsociada = listaVarAsociada;
	}
	@OneToMany(mappedBy="varAlimPrincipal", cascade=CascadeType.ALL)
	public List<VariableProcesoAsociada> getListaVarProAsociada() {
		return listaVarProAsociada;
	}
	public void setListaVarProAsociada(
			List<VariableProcesoAsociada> listaVarProAsociada) {
		this.listaVarProAsociada = listaVarProAsociada;
	}
	@ManyToOne
	public MaterialDefProd getMateriaProducto() {
		return materiaProducto;
	}
	public void setMateriaProducto(MaterialDefProd materiaProducto) {
		this.materiaProducto = materiaProducto;
	}
	@ManyToOne
	public MaterialDefUso getMateriaUso() {
		return materiaUso;
	}
	public void setMateriaUso(MaterialDefUso materiaUso) {
		this.materiaUso = materiaUso;
	}
	@ManyToOne
	public EnergiaUso getEnergiaUso() {
		return energiaUso;
	}
	public void setEnergiaUso(EnergiaUso energiaUso) {
		this.energiaUso = energiaUso;
	}
	
}
